/******************************************************************************************************
*	学生作业系统 创建 基础信息 表结构脚本. 
*	基于MS数据库
*	
*******************************************************************************************************/
----------------------------------------------------------------------------------------------------------
if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_classstudents')
begin
	print 'drop table tbl_sw_base_classstudents'
	drop table tbl_sw_base_classstudents
end
go
if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_teacherclasses')
begin
	print 'drop table tbl_sw_base_teacherclasses'
	drop table tbl_sw_base_teacherclasses
end 
go
if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_classes')
begin
	print 'drop table tbl_sw_base_classes'
	drop table tbl_sw_base_classes
end
go
if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_teachers')
begin
	print 'drop table tbl_sw_base_teachers'
	drop table tbl_sw_base_teachers
end
go
----------------------------------------------------------------------------------------------------------
--学校单位信息表
if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_unit')
begin
	print 'drop table tbl_sw_base_unit'
	drop table tbl_sw_base_unit
end 
go
create table tbl_sw_base_unit
(
	unit_id		nvarchar(64) not null,--学校单位ID.
	unit_code	nvarchar(32) not null,--学校单位代码.
	unit_name	nvarchar(128) not null,--学校单位名称.
	unit_type	int	default(1),--学校单位类型:0-未知,1-幼儿园,2-小学,3-初中,4-高中,5-职中,6-高职高专,7-大学,8-教育局.
	
	unit_address nvarchar(256),--学校地址.
	unit_website nvarchar(256),--学校网址.
	
	order_no	int default(0),--排序号.
	
	create_time	datetime default(getdate()),--创建时间.
	modify_time	datetime default(null),--修改时间.
	
	constraint pk_tbl_sw_base_unit primary key(unit_id),--主键约束.
	constraint uk_tbl_sw_base_unit_unit_code unique(unit_code)--唯一约束.
)
go
--------------------------------------------------------------------------------------------------------
--年级信息表.
if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_grade')
begin
	print 'drop table tbl_sw_base_grade'
	drop table tbl_sw_base_grade
end
go
	print 'create table tbl_sw_base_grade'
go
create table tbl_sw_base_grade
(
	grade_id	nvarchar(64) not null,--年级ID。
	grade_code	nvarchar(32) not null,--年级代码。
	grade_name  nvarchar(32) not null,--年级名称。
	
	grade_value	int	default(0),--年级值：1-一年级，2-二年级...
	grade_level int default(0),--培养层次：1-幼儿园，2-小学，3-初中，4-高中，5-大学。
	
	constraint pk_tbl_sw_base_grade primary key(grade_id),--主键约束。
	constraint uk_tbl_sw_base_grade_grade_code unique(grade_code)--唯一约束。
)
go
--------------------------------------------------------------------------------------------------------
--班级信息表。
if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_classes')
begin
	print 'drop table tbl_sw_base_classes'
	drop table tbl_sw_base_classes
end
go
	print 'crate table tbl_sw_base_classes'
go
create table tbl_sw_base_classes
(
	class_id	nvarchar(64) not null,--班级Id。
	class_code	nvarchar(32) not null,--班级代码。
	class_name	nvarchar(32) not null,--班级名称。
	
	unit_id				nvarchar(64) not null,--所属学校Id。
	class_joinyear		int	null,--入学年份(YYYY)。
	class_gradevalue	int null,--当前年级。
	class_level			int default(0),--培养层次：1-幼儿园，2-小学，3-初中，4-高中，5-大学。
	
	create_time	datetime default(getdate()),--创建时间。
	modify_time	datetime default(null),--修改时间。
	
	constraint pk_tbl_sw_base_classes primary key(class_id),--主键约束。
	constraint uk_tbl_sw_base_classes_unit_id_class_code unique(unit_id,class_code),--唯一约束。
	
	constraint fk_tbl_sw_base_classes_tbl_sw_base_unit_unit_id foreign key(unit_id) references tbl_sw_base_unit(unit_id)--外键约束。
)
go
--------------------------------------------------------------------------------------------------------
--学生信息表。
if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_students')
begin
	print 'drop table tbl_sw_base_students'
	drop table tbl_sw_base_students
end
go
	print 'create table tbl_sw_base_students'
go
create table tbl_sw_base_students
(
	student_id		nvarchar(64) not null,--学生Id。
	student_code	nvarchar(32) not null,--学生学号。
	student_name	nvarchar(32) not null,--姓名。
	
	student_gender		int default(0),--性别：0-未知，1-男，2-女。
	student_joinyear	int null,--入学年份。
	student_idcard		nvarchar(32),--身份证号。
	
	class_id	nvarchar(64) not null,--班级Id。
	
	create_time	datetime default(getdate()),--创建时间。
	modify_time	datetime default(null),--修改时间。
	
	constraint pk_tbl_sw_base_students primary key(student_id),--主键约束。
	constraint uk_tbl_sw_base_students_student_code unique(student_code),--唯一约束。
	constraint fk_tbl_sw_base_students_tbl_sw_base_classes_class_id foreign key(class_id) references tbl_sw_base_classes(class_id)--外键约束。 
)
go
--------------------------------------------------------------------------------------------------------
--学生班级关系表。
--if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_classstudents')
--begin
--	print 'drop table tbl_sw_base_classstudents'
--	drop table tbl_sw_base_classstudents
--end
--go
--	print 'create table tbl_sw_base_classstudents'
--go
--create table tbl_sw_base_classstudents
--(
--	
--	student_id	nvarchar(64) not null,--学生Id。
--	create_time	datetime default(getdate()),--创建时间。
--	
--	constraint pk_tbl_sw_base_classstudents primary key(class_id,student_id),--主键约束。
--	constraint fk_tbl_sw_base_classstudents_tbl_sw_base_classes_class_id foreign key(class_id) references tbl_sw_base_classes(class_id),--外键约束。
--	constraint fk_tbl_sw_base_classstudents_tbl_sw_base_students_student_id foreign key(student_id) references tbl_sw_base_students(student_id)--外键约束。
--)
--go
--------------------------------------------------------------------------------------------------------
--教师信息表。
if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_teachers')
begin
	print 'drop table tbl_sw_base_teachers'
	drop table tbl_sw_base_teachers
end
go
	print 'create table tbl_sw_base_teachers'
go
create table tbl_sw_base_teachers
(
	teacher_id		nvarchar(64) not null,--教师ID。
	teacher_code	nvarchar(32) not null,--教师职工号。
	teacher_name	nvarchar(32) not null,--教师名称。
	
	unit_id			nvarchar(64) not null,--所属学校Id。
	
	create_time	datetime default(getdate()),--创建时间。
	modify_time	datetime default(null),--修改时间。
	
	constraint pk_tbl_sw_base_teachers primary key(teacher_id),--主键约束。
	constraint uk_tbl_sw_base_teachers_unit_id_teacher_code unique(unit_id,teacher_code)--外键约束。
)
go
--------------------------------------------------------------------------------------------------------
--任课教师班级对应关系表。
if exists(select 0 from sysobjects where xtype = 'u' and name = 'tbl_sw_base_teacherclasses')
begin
	print 'drop table tbl_sw_base_teacherclasses'
	drop table tbl_sw_base_teacherclasses
end 
go
	print 'create table tbl_sw_base_teacherclasses'
go
create table tbl_sw_base_teacherclasses
(
	teacher_id		nvarchar(64) not null,--教师ID。
	class_id		nvarchar(64) not null,--班级Id。
	
	create_time		datetime default(getdate()),--创建时间。
	modify_time		datetime default(null),--修改时间。
	
	constraint pk_tbl_sw_base_teacherclasses primary key(teacher_id,class_id),--主键约束。
	constraint fk_tbl_sw_base_teacherclasses_tbl_sw_base_teachers_teacher_id foreign key(teacher_id) references tbl_sw_base_teachers(teacher_id),--外键约束。
	constraint fk_tbl_sw_base_teacherclasses_tbl_sw_base_classes_class_id foreign key(class_id) references tbl_sw_base_classes(class_id)--外键约束。
)
go
--------------------------------------------------------------------------------------------------------